The functionality offered by software is becoming ever more complex. Architectural diagrams are used to provide an overview of the functionality and/or structure of software. There are a variety of types of architectural diagrams used for software. Common amongst all these architectural diagrams is some visual representation of multiple components of the software, along with some visualization of relationships between the components. The Unified Modeling Language (UML) is a standardized modeling language and includes a set of graphical notation techniques to create visualizations of software-intensive systems. The UML defines a number of different types of architectural diagrams.
Architectural diagrams have historically first been constructed manually, in which an author draws the diagram to highlight a design or requirement of the software. More recently, automated generation of architectural diagrams is employed. Such automated systems perform a static code analysis of the source code, intermediate code, and/or binary code. From this static code analysis, the system may derive information from which a static model of the code may be derived, the static model representing various components of the software and their relationships. From that static model, an architectural diagram may be automatically constructed.